<?php

/**
 * login actions.
 *
 * @package    auip
 * @subpackage login
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class loginActions extends sfActions
{	
	
  public function executeLogin(sfWebRequest $request)
  {
   $this->form = new LoginForm();
   
        if ($request->isMethod("POST"))
        {
            $this->form->bind($request->getParameter('usuario'), $request->getFiles('usuario'));

            if ($this->form->isValid())
            {

                                if(!$user = UsuarioTable::login2($this->form->getValue('email'), $this->form->getValue('password'))){
                                    $this->getUser()->setFlash("error", "datos de Usuario o contraseña incorrectos");

				}
                                else
                                {
                                    //$this->getUser()->clearCredentials();
                                    $this->getUser()->setAuthenticated(false);
                                    //$this->getUser()->getAttributeHolder()->clear();
                                    
                                   $id_beca = $this->getUser()->getAttribute('id');
				   $this->getUser()->setAttribute("email",$user->email);
                                   $this->getUser()->setAttribute("nom",$user->nombre.' '.$user->apellidos);
                                   
                                   
                                   $tipo_usuario = $user->id_perfil;
                                    $this->getUser()->setAuthenticated(true);
                                    
                                    if($tipo_usuario==1){
                                        $this->getUser()->addCredential('admin');
                                        //$this->redirect('/auip_app_dev.php/gestion_usuarios');
                                        $this->redirect($this->generateUrl('default', array('module' => 'becas','action' => 'index')));                                           
                                    }
                                    elseif ($tipo_usuario==3){
                                        $this->getUser()->addCredential('reporter');
                                        //$this->redirect('/auip_app_dev.php/becas');
                                        $this->redirect($this->generateUrl('default', array('module' => 'becas','action' => 'index')));                                           
                                    }
                                    else{
                                        $this->getUser()->addCredential('user');
                                        
                                        if($id_beca == '')
                                        {
                                        //    $this->redirect($this->generateUrl('default', array('module' => 'aplicaciones','action' => 'index', 'email' => Mensajero::encriptador($this->getUser()->getAttribute("email")))));
                                            $this->redirect($this->generateUrl('default', array('module' => 'becas_aplicables','action' => 'index')));
                                        }
                                        else
                                        {
                                            //$this->redirect($this->generateUrl('default', array('module' => 'aplicaciones','action' => 'new', 'email' => Mensajero::encriptador($this->getUser()->getAttribute("email")), 'id' => $id_beca)));                                           
                                            $this->redirect($this->generateUrl('default', array('module' => 'aplicaciones','action' => 'new', 'id' => $id_beca)));                                           
                                        }
                                    }
                                    
                                }
            }
	}
   }
   
  
	
	public function executeLogout(sfWebRequest $request)
	{
               $this->getUser()->clearCredentials();
               $this->getUser()->setAuthenticated(false);
               $this->getUser()->getAttributeHolder()->clear();
               //$this->redirect('/auip_app_dev.php/login/index');
               $this->redirect($this->generateUrl('default', array('module' => 'login','action' => 'index')));                                           

	}
	
	
  public function executeIndex(sfWebRequest $request)
  {
      $this->getUser()->setAttribute("id",$request->getParameter('id'));
    $this->usuarios = Doctrine_Core::getTable('Usuario')
      ->createQuery('a')
      ->execute();
    
        $this->form = new UserForm();
  }

  public function executeShow(sfWebRequest $request)
  {
    $this->usuario = Doctrine_Core::getTable('Usuario')->find(array($request->getParameter('email')));
    $this->forward404Unless($this->usuario);
  }

  public function executeNew(sfWebRequest $request)
  {
    $this->form = new Usuario2Form();
  }

  public function executeCreate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST));
    $this->form = new Usuario2Form();
    
   
    $this->processForm($request, $this->form);
    
    $this->setTemplate('new');
  }

  public function executeEdit(sfWebRequest $request)
  {
    $this->forward404Unless($usuario = Doctrine_Core::getTable('Usuario')->find(array($request->getParameter('email'))), sprintf('Object usuario does not exist (%s).', $request->getParameter('email')));
    $this->form = new Usuario2bForm($usuario);
  }

  public function executeUpdate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $this->forward404Unless($usuario = Doctrine_Core::getTable('Usuario')->find(array($request->getParameter('email'))), sprintf('Object usuario does not exist (%s).', $request->getParameter('email')));
    $this->form = new Usuario2bForm($usuario);

    $this->processForm($request, $this->form);

    $this->setTemplate('edit');
  }

  public function executeDelete(sfWebRequest $request)
  {
    $request->checkCSRFProtection();

    $this->forward404Unless($usuario = Doctrine_Core::getTable('Usuario')->find(array($request->getParameter('email'))), sprintf('Object usuario does not exist (%s).', $request->getParameter('email')));
    $usuario->delete();

    $this->redirect('login/index');
  }

  protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {
		$usuario = new Usuario();
		$usuario->email = $this->form->getValue('email');
		$usuario->nombre = $this->form->getValue('nombre');
		$usuario->apellidos = $this->form->getValue('apellidos');
		$usuario->password = md5($this->form->getValue('password'));
		$usuario->id_perfil = $this->form->getValue('id_perfil');
		$usuario->id_perfil = 2;
		$usuario->registro_activo = 1;
		$usuario->save();
      //$usuario = $form->save();
       //enviar email
       
      if($form->getNameTo() == 'Usuario2Form'){

          $this->getUser()->setFlash("notificacion", "Usuario creado exitosamente, se ha enviado un mensaje de confirmacion a su correo electronico, verifique su correo");
         /* 
          $titulo = 'Mensaje de Confirmacion';
              $cabecera = 'Mensaje de Confirmacion AUIP';
              $mensaje = '<h2>Usuario creado exitosamente</h2><p>Atentamente te escribimos para notificarte que 
                                                tu usuario se ha creado exitosamente con los siguientes datos<br>
                                                email: '.$usuario->email.'<br> nombres: '.$usuario->nombre.'<br>
                                                apellidos: '.$usuario->apellidos.'<br> usuario: Aspirante <br>    ;) </p>';
              Mensajero::enviarCorreo($titulo, $cabecera, $mensaje, $usuario->email);
         */
           $this->redirect('login/index');
        }

        $this->redirect('login/edit?email='.$usuario->getEmail());
    }
  }
  
  public function executeRecuperacion(sfWebRequest $request)
  {
	  
     $this->form = new recuperacionForm();
    
     if ($request->isMethod("POST"))
     {
          
        $this->form->bind($request->getParameter('recuperacion'), $request->getFiles('recuperacion'));
        if ($this->form->isValid())
        {
              $email = $this->form->getValue('email');

              if(!$user = UsuarioTable::existeCorreo($email))
              {
                    //EL CORREO NO EXISTE
                    $this->getUser()->setFlash('correo', 'El correo no existe');
              }
              else
              {
                    $pass = $user->getPassword();

                    if( $email != '' && $pass != '')
                    {
      /*
                        $titulo = 'Soporte de contraseña AUIP';
                        $cabecera = 'Mensaje de Recuperacion de contraseña';
                        $mensaje = '<h1>Recuperacion de contraseña</h1><p>Atentamente te escribimos para recuperar tu contraseña, este
                                                          es tu codigo de confirmacion: '.$pass.'       ;) </p>';
                        Mensajero::enviarCorreo($titulo, $cabecera, $mensaje, $email);
        */                    
                   
                    //mensaje
                    $this->redirect($this->generateUrl('default', array('module' => 'login','action' => 'recovery', 'e' => Mensajero::encriptador($email))));
                        
                    }
              }
         }         
     }
  }
  
  public function executeRecovery(sfWebRequest $request)
  {
       $this->form = new recoveryForm();
       
       if ($request->isMethod("POST"))
        {
            $valores = $request->getParameter('recovery');
            $valores['email'] = Mensajero::desecriptar($this->getUser()->getAttribute('e'));
            $this->form->bind($valores, $request->getFiles('recovery'));
            
            if($this->form->isValid())
            {
                
                if(!$user = UsuarioTable::existe($valores['email'], $valores['codigo']))
                {
                    $this->getUser()->setFlash('codigo', 'El codigo proporcionado no es valido');                    
                }
                else
                {
                    UsuarioTable::actualizarClave($valores['email'], $valores['password']);
                    $this->redirect($this->generateUrl('default', array('module' => 'login','action' => 'index')));
                    $this->getUser()->setFlash('codigo', 'Contraseña cambiada exitosamente'); 
                }
            }
           
            
        }
        else if($request->getParameter('e') != '')//$this->getUser()->hasAttribute('e'))
        {
             $this->getUser()->setAttribute('e', $request->getParameter('e'));
        }
  }
  
}
